package com.niiwoo.civet.trade.dto.response;

import lombok.Data;
import lombok.ToString;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * Created by dell on 2017/12/7.
 * 投资订单详情
 */
@Data
@ToString
public class InvestOrderDetailDubboDTO implements Serializable {
	private Byte evolutionStatus;// 投资订单衍变状态（1投资中，2回款中，3回款逾期，4已关闭，5已结清）
	private Byte deadlineUnit;// 期限类型：1月，2天
	private InvestingOrderDetailDTO investingOrderDetailDTO;// 投资订单详情（投资中不为空）
	private MonthProjectBackingOrderDetailDTO monthProjectBackingOrderDetailDTO;// 月标投资订单详情（回款中||回款逾期）
	private MonthProjectBackedOrderDetailDTO monthProjectBackedOrderDetailDTO;// 月标投资订单详情（已结清）
	private DayProjectBackingOrderDetailDTO dayProjectBackingOrderDetailDTO;// 天标投资订单详情（回款中||回款逾期）
	private DayProjectBackedOrderDetailDTO dayProjectBackedOrderDetailDTO;// 天标投资订单详情（已结清）

	/**
	 * 投资订单详情（投资中）
	 */
	@Data
	@ToString
	public static class InvestingOrderDetailDTO implements Serializable {
		private BigDecimal amount;// 投资金额
		private BigDecimal interest;// 预期收益
		private BigDecimal investedAmount;// 已投资金额
		private BigDecimal contractAmount;// 借款目标
		private Date investEndTime;// 投标截止时间
		private Byte isFull = Byte.valueOf("0");// 是否满标 0:未满标 1:满标
		private String desc;// 描述
	}

	/**
	 * 月标投资订单详情（回款中||回款逾期）
	 */
	@Data
	@ToString
	public static class MonthProjectBackingOrderDetailDTO implements Serializable {
		private BigDecimal backingAmount;// 待收金额
		private BigDecimal backedAmount;// 已回金额
		private String backedPeriod;// 已回期数
		private BigDecimal amount;// 总投资
		private BigDecimal interest;// 总收益
		private Integer totalPeriods;// 总期数
		private String repaymentType;// 还款方式
		private Byte haveAddInterest = Byte.valueOf("0");// 是否有加息
		private List<BackPlanDTO> backPlanDTOList = new ArrayList<>();// 回款计划
	}

	/**
	 * 月标投资订单详情（已结清）
	 */
	@Data
	@ToString
	public static class MonthProjectBackedOrderDetailDTO implements Serializable {
		private BigDecimal amount;// 投资金额
		private BigDecimal interest;// 实际收益
		private Integer totalPeriods;// 总期数
		private String repaymentType;// 还款方式
		private Byte haveAddInterest = Byte.valueOf("0");// 是否有加息
		private List<BackPlanDTO> backPlanDTOList = new ArrayList<>();// 回款计划
	}

	/**
	 * 天标投资订单详情（回款中||回款逾期）
	 */
	@Data
	@ToString
	public static class DayProjectBackingOrderDetailDTO implements Serializable {
		private BigDecimal backingAmount;// 待收金额
		private BigDecimal backedAmount;// 已回金额
		private String deadline;// 借款天数
		private BigDecimal amount;// 总投资
		private BigDecimal interest;// 总收益
		private String repaymentType;// 还款方式
		private String backDate;// 回款日期
		private BigDecimal addInterest;// 加息
		private Byte status;// 收款状态(1回款中，2回款逾期，3已回款,5第三方担保机构代偿)
	}

	/**
	 * 天标投资订单详情（已结清）
	 */
	@Data
	@ToString
	public static class DayProjectBackedOrderDetailDTO implements Serializable {
		private BigDecimal amount;// 投资金额
		private BigDecimal interestTotal;// 实际收益
		private String repaymentType;// 还款方式
		private String backDate;// 回款日期
		private BigDecimal interest;// 回款利息
		private BigDecimal addInterest;// 回款加息
		private Byte status;// 收款状态(1回款中，2回款逾期，3已回款,5第三方担保机构代偿)
	}

	/**
	 * 回款计划
	 */
	@Data
	@ToString
	public static class BackPlanDTO implements Serializable {
		private String period;// 期数
		private String backDate;// 回款时间
		private BigDecimal amount;// 回款本金
		private BigDecimal interest;// 回款利息
		private BigDecimal addInterest;// 回款加息
		private Byte status;// 收款状态(1回款中，2回款逾期，3已回款，4提前结清,5第三方担保机构代偿)
	}
}
